home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
08 System Utilities
/
FSEARC.SRC
< prev
next >
Wrap
Text File
|
2019-04-13
|
4KB
|
205 lines
; FSEARCH.SRC ├128 40/80
; DOUG ZIMMER 10/6/89
;
.ORG $2B00 ; ABOVE ┬┴╙╔├ PROGRAM
; VIEW:
; ENTIRE FILE - SYS DEC($2B00),0
; START AT STRING1 - SYS DEC($2B00),1
; START AT STRING1, STOP
; AFTER STRING2 - SYS DEC($2B00),2
; PRINT:
; ENTIRE FILE - SYS DEC($2B00),3
; START AT STRING1 - SYS DEC($2B00),4
; START AT STRING1, STOP
; AFTER STRING2 - SYS DEC($2B00),5
;
;DIS
;
STRING1 = *+$200 ; 1ST BYTE IS LENGTH
STRING2 = *+$281
;STRINGS ARE 128 CHARS. MAX.
;
.LST "KERNAL128.TBL"
;OBJ "@0:FSEARCH.OBJ"
;
STA MODE
;
LDX #$0F ; SET BANK CONFIG. 15
JSR $FF6B
STA $FF00
;
LDA MODE
BEQ VF'JUMP ; VIEW ALL IF 0,
CMP #3 ; PRINT ALL IF 3,
BEQ PF'JUMP ; OTHERWISE SEARCH
JMP SEARCH
;
VF'JUMP = *
JMP VIEW'FILE
PF'JUMP = *
SEI
JMP PRINT'FILE
;
SEARCH = *
JSR CLRCH
LDX #1
JSR CHKIN ; SET INFILE=1
NEW'SEARCH1 = *
LDY #0 ; RESET COUNTER
READ'CMP1 = *
INY ; NEXT CHAR IN STRING
JSR STOP ; STOP KEY CHECK
BNE +
JMP V'EXIT
+ JSR BASIN ; GET CHAR FROM FILE
LDX $90 ; END OF FILE CHECK
BEQ +
JMP V'EXIT
+ CMP STRING1,Y ; IF NO MATCH, GO TO
BNE NEW'SEARCH1 ; 1ST CHAR IN STRING
TYA
CMP STRING1 ; END OF STRING?
BNE READ'CMP1
;
PRINT'STRING1 = *
LDY #0 ; RESET COUNTER
JSR CLRCH
LDA MODE
CMP #1
BEQ PRT'CHAR
CMP #2
BEQ PRT'CHAR
SEI ; DISABLE INTERRUPTS
LDX #4 ; PRINTER OUTPUT
JSR CKOUT
LDA #13 ; PRINT 2 RETURNS
JSR BSOUT
LDA #13
JSR BSOUT
PRT'CHAR = *
INY ; NEXT CHAR IN STRING
LDA STRING1,Y
JSR BSOUT ; PRINT IT
TYA
CMP STRING1 ; END OF STRING?
BNE PRT'CHAR
LDA MODE
CMP #1
BEQ VF'JUMP ; VIEW REST OF FILE
CMP #4
BEQ PF'JUMP ; PRINT REST OF FILE
CMP #5
BEQ NEW'PSEARCH2 ; PRINT THRU STRING2
JSR CLRCH
LDX #1
JSR CHKIN
;
NEW'VSEARCH2 = *
LDY #0 ; RESET COUNTER
VREAD'CMP2 = *
INY ; NEXT CHAR IN STRING
JSR STOP ; STOP KEY CHECK
BNE +
JMP V'EXIT
+ JSR BASIN ; GET CHAR FROM FILE
JSR BSOUT ; PRINT CHAR
LDX $90 ; END OF FILE CHECK
BEQ +
JMP V'EXIT
+ CMP STRING2,Y ; IF NO MATCH, GO TO
BNE NEW'VSEARCH2 ; 1ST CHAR IN STRING
TYA
CMP STRING2 ; END OF STRING?
BNE VREAD'CMP2
JMP V'EXIT
;
NEW'PSEARCH2 = *
LDY #0 ; RESET COUNTER
PREAD'CMP2 = *
INY ; NEXT CHAR IN STRING
JSR CLRCH
LDX #1
JSR CHKIN ; SET INFILE=1
JSR STOP ; STOP KEY CHECK
BNE +
JMP P'EXIT
+ JSR BASIN ; GET CHAR FROM FILE
STA CHAR ; STORE IT
LDX $90 ; END OF FILE CHECK
BEQ +
JSR CLRCH
LDX #4
JSR CKOUT ; SET OUTFILE=4
LDA CHAR
JSR BSOUT ; PRINT LAST CHAR
JMP P'EXIT
+ JSR CLRCH
LDX #4
JSR CKOUT ; SET OUTFILE=4
LDA CHAR
JSR BSOUT ; PRINT CHAR
CMP STRING2,Y ; IF NO MATCH, GO TO
BNE NEW'PSEARCH2 ; 1ST CHAR IN STRING
TYA
CMP STRING2 ; END OF STRING?
BNE PREAD'CMP2
JMP P'EXIT
;
VIEW'FILE = *
JSR CLRCH
LDX #1
JSR CHKIN ; SET INFILE=1
- JSR STOP ; STOP KEY CHECK
BNE +
JMP V'EXIT
+ JSR BASIN ; GET CHAR FROM FILE
JSR BSOUT ; PRINT CHAR
LDY $90 ; END OF FILE CHECK
BEQ -
JMP V'EXIT
;
PRINT'FILE = *
JSR CLRCH
LDX #1
JSR CHKIN ; SET INFILE=1
JSR STOP ; STOP KEY CHECK
BNE +
JMP P'EXIT
+ JSR BASIN ; GET CHAR FROM FILE
STA CHAR ; STORE IT
LDX $90 ; END OF FILE CHECK
BEQ +
JSR CLRCH
LDX #4
JSR CKOUT ; SET OUTFILE=4
LDA CHAR
JSR BSOUT ; PRINT LAST CHAR
JMP P'EXIT
+ JSR CLRCH
LDX #4
JSR CKOUT ; SET OUTFILE=4
LDA CHAR
JSR BSOUT ; PRINT CHAR
JMP PRINT'FILE
;
V'EXIT = *
CLI ; DISABLE INTERRUPTS
JMP CLRCH ; RETURN TO ┬┴╙╔├
;
P'EXIT = *
JSR CLRCH
LDX #4
JSR CKOUT ; SET OUTFILE=4
LDA #13 ; PRINT 2 RETURNS
JSR BSOUT
LDA #13
JSR BSOUT
CLI ; DISABLE INTERRUPTS
JMP CLRCH ; RETURN TO ┬┴╙╔├
;
MODE = *
CHAR = *+1
;DIS
;